/*
 * CFrameBufferObject.h
 *
 *      Author: grifos
 */

#ifndef CFRAMEBUFFEROBJECT_H_
#define CFRAMEBUFFEROBJECT_H_
#include <GL/gl.h>

class CFrameBufferObject {
private:
	GLuint		_TextureID; // L'id de la texture utilisé pour stocker le contenu du render buffer
	GLuint		_width, _height; // La largeur et la hauteur
	GLuint		_FBHandle; // Le handle du fbo crée
	GLuint		_DBHandle; // Le handle du depth buffer bindé au fbo
	GLenum		_TextureType; // Le type de texture utilisé
	GLenum		_Attachment; // Le type d'attachement du fbo
	bool _created; // Indique si le fbo est crée
public:
	CFrameBufferObject();
	virtual ~CFrameBufferObject();

	int CreateFBO( GLuint w, GLuint y);
	void BeginUse();
	void EndUse();
	void BindTexture(GLuint textid);
	void UnbindTexture(GLuint textid);

	GLuint getTexture() { return _TextureID; }
	bool isCreated(){ return this->_created; }
	float getWidth(){ return this->_width; }
	float getHeight(){ return this->_height; }
};

#endif /* CFRAMEBUFFEROBJECT_H_ */
